Repository navigation
ci(node-status): trigger the freshness checks on their remaining inputs - #730
Conversation
…gation-index-20261029
Record the actual ordinary, optimized and prepared Node results at their tested source. Keep previous red and green evidence.
Require nonce-bound control receipts for the intended bypass and preserve all original mutant cases. Add wrong-subject, absent-receipt and harness mutation controls.
Preserve the original tested source, negative observations and raw transcripts as ancestry and evidence. This component does not certify the federation.
…metic in Q(sqrt d1..dk)
The G12 statement check (main#726) reported every theorem with binders before the colon
UNSUPPORTED, which left the Math- formal core (63 Mathlib real-analysis statements) entirely
outside the empirical layer. This commit adds the sampled backend and the exact real backend
the registration (main#741) records as the gap.
Binders: `(x y : ℝ)`, `{n : ℕ}` and the other numeric types declare sampled variables; `(h : p)`
whose type is a proposition over declared names is a hypothesis (Set.Icc/Ico/Ioc/Ioo/Ici/Iic/
Ioi/Iio membership desugared); instance binders, function and structure types and undefined
predicates make the theorem UNSUPPORTED naming the binder. Infinite quantifiers inside a
statement stay UNSUPPORTED (the landed contract).
Sampling: exact pathological pool (0, ±1, ±tiny, ±huge, squares, non-squares, repeating
decimals), the boundary values the hypotheses name (`c ≤ x`, `x < c`, `|x - e| ≤ c`, with
±1 and ±1e-6 neighbours) and seeded random rationals; variables drawn in declaration order
with each hypothesis checked once its variables are assigned; structured points first so a
witness is small. Verdicts: FAIL with the exact witness; CORROBORATED when no instance refutes
the statement (admitted evidence, never PASS); UNSUPPORTED when no sample satisfies the
hypotheses (possibly vacuous). Deterministic for a seed; `--seed`, `--samples` recorded.
Reals: Fractions, and `Real.sqrt` of a rational as an element of the multi-quadratic field in
canonical form over squarefree radicands, so equality is exact; division rationalizes by
conjugation over a coprime base; the sign of a nonzero element is decided by refining
integer-square-root enclosures. Nested radicals, Real.exp/log/pi/trig and real exponents are
UNSUPPORTED by name. Lean conventions: x / 0 = 0, 0⁻¹ = 0, Real.sqrt x = 0 for x ≤ 0, exponents
typed on their own (`x ^ (1/2)` is `x ^ 0`; ℤ exponent is zpow), ascriptions elaborate their
body at the ascribed type (`(n - 1 : ℝ)` is `↑n - 1`; `((n - 1 : ℕ) : ℝ)` casts a truncated
Nat). `|e|`, `√e`, `e⁻¹` and scientific literals (field context only) are parsed. Resource caps
raise Infeasible: a sampled instance is skipped and counted, a closed statement is UNSUPPORTED.
Mutation contract: mutants keep the binders (class 1 false at every instance must be refuted by
sampling; class 2 true at every instance must not); the control accepts PASS or CORROBORATED.
Exit code: unchanged by default (PASS only); `--admit-corroborated` admits CORROBORATED.
Tests: 35 → 64 (one landed expectation changes: `(x : ℝ)` lemma CORROBORATED, not UNSUPPORTED).
main `formal/` at ec6962f: 59/59 PASS, identical per target. Math- `formal/` at 19a55750:
3 PASS, 29 CORROBORATED, 31 UNSUPPORTED (all measure-theoretic binders), 0 FAIL.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NMeKEismAyeqgdB4sy2NJU
…nd proposed registration amendment main_formal_ec6962ff_r2 (59/59 PASS, 184/184 killed, 15 declared statement controls FAIL), math_formal_19a55750_r2 (3 PASS / 29 CORROBORATED / 31 UNSUPPORTED, 45/45 killed) and the seed-2/256-sample run with --admit-corroborated (same distribution; exit 1 on the 31 UNSUPPORTED). Local paths scrubbed. The README records what the backend does and does not do, the per-target Math- outcome, and the GOVERNANCE.md amendment text proposed for Root. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMeKEismAyeqgdB4sy2NJU
…cientific literals, hypothesis names A binder type that parses as a comparison but mentions a type token (ℝ≥0, ℕ+) is reported as an unsupported type, not as a hypothesis with undeclared names; a comparison whose only numeric content is scientific literals (Lean: Float) is refused at the comparison, not only at the literal; transcendental names are known in hypotheses so the evaluator's message names them; the random attempt cap per requested sample drops from 64 to 16 (the sequential sampler rejects little). Two tests (66). Receipts regenerated: byte-identical. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMeKEismAyeqgdB4sy2NJU
…ements
The 31 Math- `formal/` statements the ℝ backend left UNSUPPORTED are over a carrier `variable {Ω : Type*}`
with binders `(μ : Measure Ω)`, `(W : Ω → ℝ)`, `(A : Set Ω)`, instance hypotheses `[IsProbabilityMeasure μ]`,
integrals `∫ x, f x ∂μ` / `∫ x in A, …`, event masses `(μ A).toReal`, a.e. relations `0 ≤ᵐ[μ] W`,
set-builders `{x | p x}`, `⊆`, `≪`, `μ.withDensity`, `c • μ` and ENNReal arithmetic. They are now sampled
on finite discrete models: Ω = Fin n (n ≤ 4), non-negative rational weights (normalised when a
probability measure is hypothesised), functions as tables, sets as subsets, with neighbour sampling so
perturbation hypotheses are hit. Every such model is an instance of the Lean statement — integrals are
finite sums, measurability and integrability automatic, a.e. relations hold off the null points,
measure equality and ≪ pointwise, ENNReal as in Mathlib (0⁻¹ = ∞, ∞·0 = 0, toReal ∞ = 0, ofReal clips) —
so a refutation is a refutation of the text's reading. Structural-only conclusions and real-indexed
families are UNSUPPORTED. Definitions and the carrier are shared package-wide; the class-1 literal-shift
mutant is typing-aware (no `(1 : Measure Ω)`).
Tests 66 → 76. Math- `formal/` 19a55750: 3 PASS · 56 CORROBORATED · 4 UNSUPPORTED, 0 FAIL, 72/72 mutants
killed, 64 accepted instances per corroborated statement, same for seeds 1–3; main `formal/` 59/59
unchanged. Receipts `*_r3*`; README section with the soundness argument and the amendment text.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NMeKEismAyeqgdB4sy2NJU
…toring of radicands; non-canonical roots Package reports and the CLI summary carry `sampling_totals` (accepted, rejected, infeasible draws and the targets where draws were infeasible), as asked in a8's #742 review. Radicands are split by exact factorisation (trial division, deterministic Miller–Rabin below 3.3e24, Brent's rho) and √(a/b) splits numerator and denominator separately; a root whose radicand is beyond that range is kept exact but non-canonical — orderings are decided by enclosures, an exact zero between such roots is Infeasible, never guessed. Math- 19a55750 now has zero infeasible draws (was 216). Tests 76 → 77. Receipts regenerated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMeKEismAyeqgdB4sy2NJU
…sumption on infinite-mass measures (a8 N2) A derived measure such as `(ENNReal.ofReal 0)⁻¹ • μ` carries points of infinite mass. `IsFiniteMeasure` is now decided from the weights (false there) instead of being assumed, and the structural predicates (Integrable, MemLp, Measurable…) on such a measure are UNSUPPORTED rather than taken for granted. One test (78). Receipts regenerated; verdicts unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NMeKEismAyeqgdB4sy2NJU
…96v2-onto-7500d43f-366a Draft: integrate p696 v2 oracle-assertion patch onto main 7500d43
…0261101 docs: reconcile STATUS with PR 713 landing
…rce-20261101 docs: date empirical coverage to its registration source
|
Author note on the Ready flip (20:52Z), read at 20:53Z. 01DKKe. Credit 0 · sci NONE.
Generated by Claude Code |
|
Author readback of the refresh to
This is the author's readback. The composition assessment that OP-WORKFLOW requires for a base-only refresh still belongs to an eligible non-author. Hosted checks are running at Generated by Claude Code |
|
Generated by Claude Code |
Non-author composition assessment — #730 refresh at
|
Change and purpose
This closes the trigger gap reported in the #709 review (#709/6545118936). #709 landed through #727 with p709, but not this follow-on, which posted three minutes before p709 was applied.
current-site.ymlnow runs the node-status freshness suite and its 22 mutation controls on pull requests. It is still not triggered by three inputs of those checks:tools/validate_node_status.py, whichtools/node_status_refresh.pyimports at runtime andrun_mutations.pycopies into every mutant workspace;records/node_status/**, which the freshness suite reads (eng.hard-gate.json) and the runner copies;architecture/node-status.schema.json, which the runner copies.So a pull request that changes only one of them skips the checks.
node-status.ymltriggers on the validator, but it runs only the validator CLI. This PR adds the three paths to thepull_request.pathsfilter. Scope: engineering (CI selection). No job, step, gating orcontinue-on-errorchange.Current disposition
3dc63c7d. Integration owner: the integrating lane under the CBZ-0 runbook (#684/6538797729).408abd93(review 5724539205). Its one nit, the width ofrecords/node_status/**, is kept on purpose. Under OWNER_DECISION_20261025 §C, a non-author review at the exact head is enough for a workflow change, and no owner check is needed. An earlier version of this line said otherwise; that was wrong. Remaining: an integrator who is neither the author nor a reviewer marks it ready, reconciles the automatic review and merges with a SHA guard.Verification
On this branch's tree, CPython 3.11:
pull_requestpaths, and the job and step set is unchanged.node-status-refreshoffline step, run as written underbash -eo pipefail:unittest tests.test_node_status_freshness tests.test_node_status_refreshgivesRan 71 tests, OK, in normal mode and with-O;run_mutations.pyexits 0, with 22 of 22 cases killed.tools/navigation_check.pyreports no problems.The same change was verified on #709's head composed with main
4712fc13(commit03b493f4, tree29bb16e1); see the review linked above.Hosted checks at
408abd93: all green. The requiredverify(job),public-intake(job) andpublic-shop(job) passed. So didnode-status-refresh, which runs the freshness suite in both modes and the 22 mutation controls (job).controls,navigation,landing-checks,research-architecture,formal-evidenceandbrowser-smokealso passed.buildanddeploywere skipped on a pull request, as designed.Evidence and limits
node-status-refreshjob is stillcontinue-on-error: true, so these checks remain report-only. Changing that is a separate decision for the Bind node-status freshness to cited object identities and strict snapshots #709 author lane.session_01DKKe26v3CSgdYch8kiJLt9). Credit 0. Scientific effect NONE. A merge here is not a gate pass.https://claude.ai/code/session_01DKKe26v3CSgdYch8kiJLt9
Generated by Claude Code